<?php

/**
 * becas actions.
 *
 * @package    auip
 * @subpackage becas
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class becasActions extends sfActions
{  
  /***********************************************************************************************************/  
    
    public function executeCapturarconvocatoria(sfWebRequest $request)
    {
        //campos fijos en la tabla becas
        $nombre = $request->getParameter('nombre_convoca');
        $tipo_convocatoria = $request->getParameter('tipo_convocatoria');      
        $tipo_entidad = $request->getParameter('tipo_entidad');      
        $entidad_que_convoca = $request->getParameter('entidad_que_convoca'); 
        //$costo = $request->getParameter('costo_convocatoria');
               

        //$id_beca = $this->Guardarconvocatoria($nombre, $tipo_convocatoria, $tipo_entidad, $entidad_que_convoca, $costo);
        $id_beca = $this->Guardarconvocatoria($nombre, $tipo_convocatoria, $tipo_entidad, $entidad_que_convoca);
        
        $this->getUser()->setAttribute('id_convocatoria', $id_beca);        
        $this->getUser()->setAttribute('id_tipo_convocatoria', $tipo_convocatoria);
        $this->getUser()->setAttribute('nombre_convocatoria', $nombre);        
        $this->ReiniciarPlazos($tipo_convocatoria);
            
        $this->redirect('becas/editar');
        return sfView::NONE;
    }
    
    public function executeBuscar_etiqueta(sfWebRequest $request)
    {
        //campos fijos en la tabla becas
        $nombre = $request->getParameter('nombre_convoca');
        $con1 = Doctrine_Manager::getInstance()->connection();
        $query1 = "SELECT a.nombre, aab.atributo_valor FROM atributos_adicionales_beca as aab INNER JOIN atributos as a ON aab.atributo_id = a.id WHERE (aab.beca_id ='".$codigo_convocatoria."');";        
        $st1 = $con1->execute($query1);
        $items = $st1->fetchAll();                
        return sfView::NONE;
    }
 
  public function executeReiniciar(sfWebRequest $request)
  {
      $id = $request->getParameter('tipo_convoca');
      $this->ReiniciarPlazos($id);
      echo 'se actualizo el plazo del tipo de convocatoria #'.$id;
      return sfView::NONE;
  }
  protected function ReiniciarPlazos($id)
  {        
        switch ($id) 
        {
            case 1:$this->ReiniciarPlazo1();
                   break;
            case 2:$this->ReiniciarPlazo2();
                   break;        
            case 3:$this->ReiniciarPlazo3();
                   break;        
            case 4:$this->ReiniciarPlazo4();
                   break;               
            default:
                echo 'Aun no se ecuentra activo';
                break;            
        }
  }
  protected function ReiniciarPlazo1()  
  {
      $con = Doctrine_Manager::getInstance()->connection();
      $query = "ALTER SEQUENCE plazo_tipo1 restart 1;";
      $st = $con->execute($query);        
  }
  protected function ReiniciarPlazo2()  
  {
      $con = Doctrine_Manager::getInstance()->connection();
      $query = "ALTER SEQUENCE plazo_tipo2 restart 1;";
      $st = $con->execute($query);        
  }
  protected function ReiniciarPlazo3()  
  {
      $con = Doctrine_Manager::getInstance()->connection();
      $query = "ALTER SEQUENCE plazo_tipo3 restart 1;";
      $st = $con->execute($query);        
  }
  protected function ReiniciarPlazo4()  
  {
      $con = Doctrine_Manager::getInstance()->connection();
      $query = "ALTER SEQUENCE plazo_tipo4 restart 1;";
      $st = $con->execute($query);        
  }
  //protected function Guardarconvocatoria($nombre, $tipo_convocatoria, $tipo_entidad, $entidad_q_convoca, $costo)  
  protected function Guardarconvocatoria($nombre, $tipo_convocatoria, $tipo_entidad, $entidad_q_convoca)  
  {
        $con = Doctrine_Manager::getInstance()->connection();
        //$query = "INSERT INTO beca(nombre, tipo_beca, tipo_entidad, entidad_que_convoca, costo_estimado) VALUES ('".$nombre."','".$tipo_convocatoria."','".$tipo_entidad."','".$entidad_q_convoca."', ".$costo.") RETURNING id;";
        $query = "INSERT INTO beca(nombre, tipo_beca, tipo_entidad, entidad_que_convoca) VALUES ('".$nombre."','".$tipo_convocatoria."','".$tipo_entidad."','".$entidad_q_convoca."') RETURNING id;";
        $st = $con->execute($query);
        $convocatoria = $st->fetchAll();
        $id_beca= $convocatoria[0][0];
        return $id_beca;
  }  
  
  protected function ActualizarConvocatoria($id, $fecha_fin)  
  {
        $con = Doctrine_Manager::getInstance()->connection();
        $query = "UPDATE beca SET fecha_fin= '".$fecha_fin."' WHERE id = '".$id."';";
        $st = $con->exec($query);        
        return $st;
  }
  
  public function executeItems(sfWebRequest $request)
  {
        $datos = array();
        $totales = array();
        $codigo_convocatoria = $request->getParameter('variable');
        $con = Doctrine_Manager::getInstance()->connection();
        $query = "SELECT aab.atributo_id, a.nombre, aab.atributo_valor FROM atributos_adicionales_beca as aab INNER JOIN atributos as a ON aab.atributo_id = a.id WHERE (aab.beca_id ='".$codigo_convocatoria."');";        
        $st = $con->execute($query);
        $items = $st->fetchAll();        
        foreach ($items as $item)
        {            
            $datos[] = $item['atributo_id'];
            $datos[] = $item['nombre'];
            $datos[] = $item['atributo_valor'];
            $totales[] = $datos;            
            $datos = array();            
        }        
        echo json_encode($totales);
        return sfView::NONE;
    }
    public function executeEditar(sfWebRequest $request)
    {
        $codigo_convocatoria = $this->getUser()->getAttribute('id_convocatoria');
        $con = Doctrine_Manager::getInstance()->connection();
        $query = "SELECT nombre FROM beca WHERE ((id='".$codigo_convocatoria."')AND (registro_activo = '1'));";
        //$query = "SELECT nombre FROM beca WHERE ((id='26')AND (registro_activo = '1'));";
        $st = $con->execute($query);
        $this->convocatoria = $st->fetchAll();        
    }   
    
    
    public function executeTerminar(sfWebRequest $request)
    {        
        $con = Doctrine_Manager::getInstance()->connection();
        $query = "SELECT id, nombre FROM tipo_documento;";
        $st = $con->execute($query);
        $this->documentos = $st->fetchAll();        
    }
    
    public function executeMostrar(sfWebRequest $request)
    {   
        $id_beca = $this->getUser()->getAttribute('id_convocatoria');
        
        $con = Doctrine_Manager::getInstance()->connection();
        $query = "SELECT b.id, b.logo, b.nombre as nombre_convocatoria, a.nombre as nombre_atributo, aab.atributo_valor, tb.nombre as tipo_convocatoria, e.nombre as entidad_institucion ";
        $query .= "FROM ((((beca as b INNER JOIN atributos_adicionales_beca as aab ON b.id = aab.beca_id)INNER JOIN atributos as a ON aab.atributo_id = a.id) INNER JOIN tipo_beca as tb ON tb.id = b.tipo_beca) INNER JOIN entidad as e ON b.entidad_que_convoca = e.id) ";
        $query .= "WHERE (b.id = '".$id_beca."');";
        $st = $con->execute($query);
        $this->una_convocatoria = $st->fetchAll();
    }
    
    public function executeCapturarterminar(sfWebRequest $request)
    {
        $valor1 = $request->getParameter('id_convocatoria');
        $valor2 = $request->getParameter('docs');                  
        
        $this->Guardar_tipodocumento($valor1, $valor2);
        $this->redirect('becas/mostrar');
        return sfView::NONE;
    }
    protected function Guardar_tipodocumento($id_beca, $tipos)  
    {
         $con = Doctrine_Manager::getInstance()->connection();
         for ($i=0; $i<count($tipos); $i++)    
         {
             if ($tipos[$i] > 0)
             {
                $query= "INSERT INTO documentos_becas(beca_id, documento_id) VALUES (". $id_beca .", ". $tipos[$i].");";              
                $st = $con->execute($query);
             }
            
         }               
        
    }
  public function executeSubir_logo(sfWebRequest $request)
  { 
        $codigo_beca = $this->getUser()->getAttribute('id_convocatoria');  
        
        $output_dir = sfConfig::get('sf_upload_dir').'/logos/';
			
	if (!file_exists($output_dir)) 
	{		
		mkdir($output_dir, 0777 , true);
	}
	else{}
        if(isset($_FILES["myfile"]))
	{
		$ret = array();
		$error =$_FILES["myfile"]["error"];
		$miArchivo  = $request->getFiles();                
						
		if(!is_array($miArchivo['myfile']['name'])) //single file
		{ 	 	
			$nom = $miArchivo['myfile']['name'];                
			$nombre_archivo = explode('.', $nom);
				
			$nombre_archivo[0] = $this->nombreArchivo($codigo_beca, "Logo_convocatoria");
			$miArchivo['myfile']['name'] = $nombre_archivo[0].'.'.$nombre_archivo[1];
					
					move_uploaded_file($miArchivo["myfile"]["tmp_name"], $output_dir.'/'.$nombre_archivo[0].'.'.$nombre_archivo[1]);
					@chmod($output_dir.'/'.$nombre_archivo[0].'.'.$nombre_archivo[1], 0777);
					@chown($output_dir.'/'.$nombre_archivo[0].'.'.$nombre_archivo[1], 'hernando');
					$this->actualizarLogo($codigo_beca, $nombre_archivo[0].'.'.$nombre_archivo[1]);                                        
					$ret[]= $miArchivo;               
					
		}	
		echo json_encode($ret);
	}//FIN SI ISSET ARCHIVO		
  }
  protected function nombreArchivo($codigo_beca, $principio_del_nombre)
  {  //FUNCION QUE PERMITE CREAR EL NOMBRE DEL ARCHIVO    
      return $principio_del_nombre.''.$codigo_beca;
  }
  protected function actualizarLogo($codigo_beca, $nombre_archivo)  
  {      
     $con = Doctrine_Manager::getInstance()->connection();
     $query = "UPDATE beca SET logo='".$nombre_archivo."' WHERE id = '".$codigo_beca."';";
     $st = $con->execute($query);
     $datos = $st->fetchAll();      
  }
  
  public function executeBorrar_logo(sfWebRequest $request)
  {
      $codigo_beca = $this->getUser()->getAttribute('id_convocatoria');      

      $output_dir = sfConfig::get('sf_upload_dir').'/logos/';
                  
      if(isset($_POST["op"]) && ($_POST["op"] == "delete") && isset($_POST['name']))      
      {
	//$fileName =$_POST['name'];
        $fileName =$request->getParameter('name');
	
        $filePath = $output_dir. $fileName['myfile']['name'];	
        if (file_exists($filePath)) 
	{
            unlink($filePath);
        }        
        echo "se ha borrado el archivo ".$fileName['myfile']['name']; 
        $this->modificarLogo($codigo_beca);
        
      }
  }
  protected function modificarLogo($codigo_beca)
  {      
     $con = Doctrine_Manager::getInstance()->connection();
     $query = "UPDATE beca SET logo='no_aplica' WHERE id = '".$codigo_beca."';";
     $st = $con->execute($query);
     $datos = $st->fetchAll();
  }
  
  public function executeBuscar_etiquetas(sfWebRequest $request)
  {
      $valor = $request->getParameter('q');
      //echo "--->".$valor;
        $datos = array();
        $totales = array();
        $con = Doctrine_Manager::getInstance()->connection();
        $query = "SELECT id, nombre FROM atributos WHERE nombre ILIKE '%".$valor."%';";        
        $st = $con->execute($query);
        $items = $st->fetchAll();        
        foreach ($items as $item)
        {            
            $datos[] = $item['id'];
            $datos[] = $item['nombre'];            
            $totales[] = $datos;            
            $datos = array();            
        }        
        echo json_encode($totales);        
        return sfView::NONE;
  }
  public function executeEtiquetas(sfWebRequest $request)
  {
      $nombre_atributo= $request->getParameter('item');
      $valor_atributo= $request->getParameter('valoritem');      
      $id_convocatoria = $this->getUser()->getAttribute('id_convocatoria');      
      $id_atributo = $this->Guardaratributo($nombre_atributo);       
      $id_beca = $this->Guardarvalor_de_atributo($id_convocatoria, $id_atributo, $valor_atributo);
      echo $id_beca;
      return sfView::NONE;      
  }
  public function executeActualizar_etiquetas(sfWebRequest $request)
  {
      $nombre_atributo= $request->getParameter('item');
      $valor_atributo= $request->getParameter('valoritem');
      $id_atributo= $request->getParameter('id_atr');
      
      $id_convocatoria = $this->getUser()->getAttribute('id_convocatoria');      
      
      if ($nombre_atributo != '')
      {
          $this->Actualizaratributo($id_atributo, $nombre_atributo);          
      }
      
      if ($valor_atributo != '')
      {          
          $this->Actualizarvalor_atributo($id_convocatoria, $id_atributo, $valor_atributo);
      }
      
      if (($nombre_atributo != '') &&  ($valor_atributo != ''))
      {
          $this->Actualizaratributo($id_atributo, $nombre_atributo);
          $this->Actualizarvalor_atributo($id_convocatoria, $id_atributo, $valor_atributo);
      }
      
      echo 'se ha realizado con exito';
      return sfView::NONE;
  }
  
  public function executeEliminar_etiquetas(sfWebRequest $request)
  {  
      $id_atributo= $request->getParameter('id_atr');
      
      $this->Eliminaratributo($id_atributo);
      $this->Eliminarvalor_atributo($id_atributo);      
      echo 'se ha realizado con exito';
      return sfView::NONE;
  }
  
  /********************************PLAZOS*******************************************************/
  
  public function executePlazos(sfWebRequest $request)
  {   
        $id= $request->getParameter('tipo_convoca');
        //$bandera= $request->getParameter('identificador');
        
         switch ($id) 
        {
            case 1:$this->Plazo_tipo1();
                   break;
            case 2:$this->Plazo_tipo2();
                   break;        
            case 3:$this->Plazo_tipo3();
                   break;        
            case 4:$this->Plazo_tipo4();
                   break;               
            default:
                echo 'Aun no se ecuentra activo';
                break;            
        }
        return sfView::NONE;
  }
  protected function Plazo_tipo1()
  {  
      $con = Doctrine_Manager::getInstance()->connection();
      $query = "SELECT nextval('plazo_tipo1') as id;";
      $st = $con->execute($query);
      $codigo_plazo = $st->fetchAll();
      //$this->imprimir_plazo1($codigo_plazo[0]['id']);
      echo $codigo_plazo[0]['id'];
      return sfView::NONE;
  }   
  protected function Plazo_tipo2()
  {
      $con = Doctrine_Manager::getInstance()->connection();
      $query = "SELECT nextval('plazo_tipo2') as id;";
      $st = $con->execute($query);
      $codigo_plazo = $st->fetchAll();      
      echo $codigo_plazo[0]['id'];
      return sfView::NONE;
  }
  protected function Plazo_tipo3()
  {
      $con = Doctrine_Manager::getInstance()->connection();
      $query = "SELECT nextval('plazo_tipo3') as id;";
      $st = $con->execute($query);
      $codigo_plazo = $st->fetchAll();      
      echo $codigo_plazo[0]['id'];
      return sfView::NONE;
  }
  protected function Plazo_tipo4()
  {
      $con = Doctrine_Manager::getInstance()->connection();
      $query = "SELECT nextval('plazo_tipo4') as id;";
      $st = $con->execute($query);
      $codigo_plazo = $st->fetchAll();      
      echo $codigo_plazo[0]['id'];
      return sfView::NONE;
  }  
  
  public function executeCapturareditar(sfWebRequest $request)
  {
      $tipo_convocatoria = $request->getParameter('tipo_convocatoria');      
      $id_convocatoria = $request->getParameter('id_convocatoria');      
      $rango1 = $request->getParameter('rango1_tipo1');      
      $rango2 = $request->getParameter('rango2_tipo1');      
      $rango3 = $request->getParameter('cierre_tipo1');     
      
      
      $plazo1_tipo2 = $request->getParameter('plazo1_tipo2');     
      $plazo2_tipo2 = $request->getParameter('plazo2_tipo2');     
      
      $plazo1_tipo3 = $request->getParameter('plazo1_tipo3');     
      //$plazo2_tipo3 = $request->getParameter('plazo2_tipo3');  
      
      $plazo1_tipo4 = $request->getParameter('plazo1_tipo4');     
      //$plazo2_tipo4 = $request->getParameter('plazo2_tipo4');  
      
      switch ($tipo_convocatoria) 
        {
            case 1:$this->Plazos_convocatoria_tipo1($rango1, $rango2, $rango3, $id_convocatoria);
                   break;
            case 2:$this->Plazos_convocatoria_tipo2($plazo1_tipo2, $plazo2_tipo2, $id_convocatoria);
                   break;        
            case 3:$this->Plazos_convocatoria_tipo3($plazo1_tipo3, $id_convocatoria);
                   break;        
            case 4:$this->Plazos_convocatoria_tipo4($plazo1_tipo4, $id_convocatoria);
                   break;               
            default:
                echo 'Aun no se ecuentra activo';
                break;            
        }
        
        $this->redirect('becas/terminar');
        return sfView::NONE;      
  }
    
  protected function Plazos_convocatoria_tipo1($v1, $v2, $close, $id_beca)
  {
      $id1 = array();
      $id2 = array();
      $id3 = array();
      
      for($i=0; $i< count($v1); $i++) 
      {          
          $id_atributo = $this->Guardaratributo('fecha_inicio_viaje');
          $id1[] = $this->Guardarvalor_de_atributo($id_beca, $id_atributo, $v1[$i]);
      }
      
      for($i=0; $i< count($v2); $i++) 
      {
          $id_atributo = $this->Guardaratributo('fecha_fin_viaje');
          $id2[] = $this->Guardarvalor_de_atributo($id_beca, $id_atributo, $v2[$i]);
      }
      
      $cantidad = count($close);   
      
      for($i=0; $i< count($close); $i++) 
      {
          $id_atributo = $this->Guardaratributo('fecha_cierre');
          $id3[] = $this->Guardarvalor_de_atributo($id_beca, $id_atributo, $close[$i]);
      }
            
      $id_convocatoria = $this->getUser()->getAttribute('id_convocatoria');              
      $fecha_fin = $close[0];      
      
      $this->ActualizarConvocatoria($id_convocatoria, $fecha_fin);
      
  }

  protected function Plazos_convocatoria_tipo2($plazo1, $plazo2, $id_beca)
  {
      $id1 = array();
      $id2 = array();
      $id3 = array();
      for($i=0; $i< count($plazo1); $i++) 
      {          
          $id_atributo = $this->Guardaratributo('plazo1_tipo2');
          $id1[] = $this->Guardarvalor_de_atributo($id_beca, $id_atributo, $plazo1[$i]);
      }
      
      for($i=0; $i< count($plazo2); $i++) 
      {
          $id_atributo = $this->Guardaratributo('plazo2_tipo2');
          $id2[] = $this->Guardarvalor_de_atributo($id_beca, $id_atributo, $plazo2[$i]);
      }
  }

  protected function Plazos_convocatoria_tipo3($plazo1, $id_beca)
  {
      $id1 = array();      
      for($i=0; $i< count($plazo1); $i++) 
      {          
          $id_atributo = $this->Guardaratributo('plazo1_tipo3');
          $id1[] = $this->Guardarvalor_de_atributo($id_beca, $id_atributo, $plazo1[$i]);
      }
  }
   protected function Plazos_convocatoria_tipo4($plazo1, $id_beca)
  {
      $id1 = array();      
      for($i=0; $i< count($plazo1); $i++) 
      {          
          $id_atributo = $this->Guardaratributo('plazo1_tipo4');
          $id1[] = $this->Guardarvalor_de_atributo($id_beca, $id_atributo, $plazo1[$i]);
      }
  }
/************************************************************************************************************************/
  protected function Guardaratributo($nombre)  
  {
         $con = Doctrine_Manager::getInstance()->connection();
         $query = "INSERT INTO atributos(nombre) VALUES ('".$nombre."') RETURNING id;";
         $st = $con->execute($query);
         $atributos = $st->fetchAll();
         $id_atributo= $atributos[0][0];
         return $id_atributo;
  } 
  
  protected function Buscaratributo($nombre)  
  {
         $con = Doctrine_Manager::getInstance()->connection();
         $query = "SELECT id, nombre FROM atributos;";
         $st = $con->execute($query);
         $atributos = $st->fetchAll();
         $id_atributo= $atributos[0][0];
         $id_atributo .= " " + $atributos[0][1];
         return $id_atributo;
  } 
  
  protected function Actualizaratributo($id_atributo, $nombre)  
  {
         $con = Doctrine_Manager::getInstance()->connection();
         $query = "UPDATE atributos SET nombre='".$nombre."' WHERE (id='".$id_atributo."')";
         $st = $con->execute($query);
         $a = $st->fetchAll();         
  }  
  
  protected function Eliminaratributo($id_atributo)  
  {
         $con = Doctrine_Manager::getInstance()->connection();
         $query = "DELETE FROM atributos WHERE (id='".$id_atributo."')";
         $st = $con->execute($query);
         $a = $st->fetchAll();         
  }
  
  protected function Guardarvalor_de_atributo($id_beca, $id_atributo, $valor)  
  {
         $con = Doctrine_Manager::getInstance()->connection();
         $query = "INSERT INTO atributos_adicionales_beca( beca_id, atributo_id, atributo_valor) VALUES ('".$id_beca."', '".$id_atributo."', '".$valor."') RETURNING beca_id";
         $st = $con->execute($query);
         $valores = $st->fetchAll();
         $id_convocatoria = $valores[0][0];
         return $id_convocatoria;
  }
  protected function Actualizarvalor_atributo($id_beca, $id_atributo, $valor)  
  {
         $con = Doctrine_Manager::getInstance()->connection();
         $query = "UPDATE atributos_adicionales_beca SET atributo_valor='".$valor."' WHERE (beca_id='".$id_beca."') AND (atributo_id='".$id_atributo."');";
         $st = $con->execute($query);
         $v = $st->fetchAll();         
  }
  
  
  protected function Eliminarvalor_atributo($id_atributo)  
  {
         $con = Doctrine_Manager::getInstance()->connection();
         $query = "DELETE FROM atributos_adicionales_beca WHERE (atributo_id='".$id_atributo."');";
         $st = $con->execute($query);
         $v = $st->fetchAll();         
  }
  
  public function executeProcesa(sfWebRequest $request)
  {
      $con = Doctrine_Manager::getInstance()->connection();      
      $id = $request->getParameter('id_tipo_entidad');
      $query = "SELECT id, nombre FROM entidad WHERE (tipo_entidad = ".$id.") ORDER BY (nombre);";
      $st = $con->execute($query);      
      $entidades = $st->fetchAll();
      
      $opciones= "<option value='0'>Seleccione la institucion y/o entidad</option>";
                foreach ($entidades as $entidad) 
                {
                    $opciones.='<option value="'.$entidad[0].'">'.$entidad[1].'</option>';
                }            
     echo $opciones; 
  } 
  
  public function executeCapturarentidad(sfWebRequest $request)
  {
      $nombre = $request->getParameter('nombre_ent');
      $id_tipo_entidad = $request->getParameter('id_tipo_ent');
      $id_pais = $request->getParameter('id_p');
      $id_region = $request->getParameter('id_reg');
      $valor_mora = $request->getParameter('valor_mora');
      $this->Guardarentidad($nombre, $id_pais, $id_region, $id_tipo_entidad, $valor_mora);      
      return sfView::NONE;
  }
  protected function Guardarentidad($nombre, $id_pais, $id_region, $id_tipo, $valor_mora)
  { 
    $datos = array();
    $con = Doctrine_Manager::getInstance()->connection();
    $query = "INSERT INTO entidad(nombre, pais_id, region_id, ciudad_id, en_mora, tipo_entidad) VALUES ('".$nombre."', '".$id_pais."', '".$id_region."', '20000', '".$valor_mora."', '".$id_tipo."') RETURNING id;";    
    $st = $con->execute($query);
    $entidad = $st->fetchAll();    
    
    $datos[] = $entidad[0][0];
    $datos[] = $nombre;    
    echo json_encode($datos);
  }     
   
  public function executeCapturartipoconvocatoria(sfWebRequest $request)
  {
      $nombre_tipo = $request->getParameter('tipo_convoca');      
      $this->Guardartipo_convocatoria($nombre_tipo);      
      return sfView::NONE;
  }
  protected function Guardartipo_convocatoria($nombre_tipo)
  { 
    $datos = array();
    $con = Doctrine_Manager::getInstance()->connection();
    $query = "INSERT INTO tipo_beca(nombre) VALUES ('".$nombre_tipo."') RETURNING id;";    
    $st = $con->execute($query);
    $entidad = $st->fetchAll();    
    $datos[] = $entidad[0][0];
    $datos[] = $nombre_tipo;
    //echo $nombre_tipo;    
    echo json_encode($datos);       
  }
  
  public function executeCapturartipoentidad(sfWebRequest $request)
  {
      $nombre_tipo = $request->getParameter('tipo_entidad');      
      $this->Guardartipo_entidad($nombre_tipo);      
      return sfView::NONE;
  }
  protected function Guardartipo_entidad($nombre_tipo)
  {     
    $datos = array();
    $con = Doctrine_Manager::getInstance()->connection();
    $query = "INSERT INTO tipo_entidad(nombre) VALUES ('".$nombre_tipo."') RETURNING id;";    
    $st = $con->execute($query);
    $entidad = $st->fetchAll();
    
    $datos[] = $entidad[0][0];
    $datos[] = $nombre_tipo;    
    echo json_encode($datos);
  }
  public function executeEntidades(sfWebRequest $request)
  {
      $con = Doctrine_Manager::getInstance()->connection();
      $id = $request->getParameter('id_pais');
      $id_region = $request->getParameter('id_region');
      $this->getUser()->setAttribute('id_region', $id_region);
      
      $query = "SELECT id, nombre FROM region WHERE (pais_id = ".$id.") AND (activo = 1) ORDER BY (nombre);";
      $st = $con->execute($query);
      echo '--->'.$id_region;
      $entidades = $st->fetchAll();
      $opciones = '<option value="0">Selecciona la region</option>';
                foreach ($entidades as $entidad) 
                {
                    $opciones.='<option value="'.$entidad[0].'">'.$entidad[1].'</option>';
                }      
     echo $opciones; 
  } 
  public function executeBuscar(sfWebRequest $request){}
  public function executeProcesador(sfWebRequest $request)
  {    
     $ids = BecaTable::getIdEntidad($request->getParameter('parametro1'));
    if ($request->isXmlHttpRequest()) 
    {   
        $q = Doctrine_Query::create()->from('Beca b')->where('1 = 1');
        
        if ($request->getParameter('parametro0') != '')
        {   
          $q->andWhere('b.nombre ILIKE ?', '%'.$request->getParameter('parametro0').'%');          
        }
        if($request->getParameter('parametro1') != '')
        {       
            
          $q->andwhere('b.entidad_que_convoca='.$ids[0] );         
          for($i=1; $i<count($ids); $i++)
            {
              $q->orWhere('b.entidad_que_convoca='.$ids[$i] );               
            }          
        }                         
        if($request->getParameter('parametro2') == 1)
        {      
            $q->addOrderBy('b.fecha_inicio DESC')->limit(5);
        }
        
        if($request->getParameter('parametro3') == 2)
        {
            $q->andWhere( '(b.fecha_fin - b.fecha_inicio) < 15')->addOrderBy('b.fecha_inicio DESC');
        }   
        $this->becas=$q->execute();        
    }    
}
  /***********************************************************************************************************/
  public function executeIndex(sfWebRequest $request)
  {
    //$this->becas = Doctrine_Core::getTable('Beca')->createQuery('a')->execute();
      $this->becas = new sfDoctrinePager('Beca', 5);
      $this->becas->setQuery(Doctrine::getTable('Beca')->createQuery('b')->select('nombre, (fecha_fin - current_date) as valor')->where('b.registro_activo <> 0')->andWhere('((fecha_fin - current_date) >= 0)')->addOrderBy('b.fecha_fin ASC')/*->andWhere( 'b.fecha_inicio >= ?',date('Y-m-d H:i:s', time() + 86400 * sfConfig::get('app_active_days')) )*/ );
      //$this->becas->setQuery("SELECT b.id, b.logo, b.nombre, a.nombre as fechas, aa.atributo_valor, e.nombre as entidad FROM (((beca as b INNER JOIN atributos_adicionales_beca aa ON aa.beca_id = b.id) INNER JOIN atributos as a ON a.id = aa.atributo_id) INNER JOIN entidad as e ON e.id = b.entidad_que_convoca ) WHERE ((a.nombre='fecha_inicio_viaje') OR (a.nombre='fecha_fin_viaje')) AND (b.registro_activo = 1)");
      //SELECT b.id, b.logo, b.nombre, a.nombre as fechas, aa.atributo_valor, e.nombre as entidad FROM (((beca as b INNER JOIN atributos_adicionales_beca aa ON aa.beca_id = b.id) INNER JOIN atributos as a ON a.id = aa.atributo_id) INNER JOIN entidad as e ON e.id = b.entidad_que_convoca ) WHERE ((a.nombre='fecha_inicio_viaje') OR (a.nombre='fecha_fin_viaje')) AND (b.registro_activo = 1)
      //$this->becas->setQuery(Doctrine::getTable('Beca')->createQuery('b')->where('b.registro_activo <> 0')->andWhere( '(b.fecha_fin - CURRENT_DATE) > 0')->addOrderBy('b.fecha_fin ASC') );
      $this->becas->setPage($request->getParameter('pagina', 1));
      $this->becas->init();
      
    //$con = Doctrine_Manager::getInstance()->connection();
    //$query = "INSERT INTO tipo_entidad(nombre) VALUES ('".$nombre_tipo."') RETURNING id;";    
    //$st = $con->execute($query);
    //$entidad = $st->fetchAll();
  }

  public function executeShow(sfWebRequest $request)
  {
    $this->beca = Doctrine_Core::getTable('Beca')->find(array($request->getParameter('id')));
    $this->forward404Unless($this->beca);
  }

  public function executeNew(sfWebRequest $request)
  {
    //$this->form = new BecaForm();
      $con = Doctrine_Manager::getInstance()->connection();
      $query = "SELECT id, nombre FROM atributos ORDER BY(nombre);";
      $st = $con->execute($query);
      $this->atributos = $st->fetchAll();
      
      $con = Doctrine_Manager::getInstance()->connection();
      $query = "SELECT id, nombre FROM tipo_beca ORDER BY(nombre);";
      $st = $con->execute($query);
      $this->tipos = $st->fetchAll();
      
      $con = Doctrine_Manager::getInstance()->connection();
      $query = "SELECT id, nombre FROM tipo_entidad ORDER BY(nombre);";
      $st = $con->execute($query);
      $this->tipos_e = $st->fetchAll();
      
      $con = Doctrine_Manager::getInstance()->connection();
      $query = "SELECT id, nombre FROM tipo_entidad;";
      $st = $con->execute($query);
      $this->tipo_entidad = $st->fetchAll();
      
      $con = Doctrine_Manager::getInstance()->connection();
      $query1 = "SELECT id, nombre, activo FROM pais WHERE (activo = 1) ORDER BY(nombre);";
      $st1 = $con->execute($query1);
      $this->paises = $st1->fetchAll();
  }

  public function executeCreate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST));

    $this->form = new BecaForm();

    $this->processForm($request, $this->form);

    $this->setTemplate('new');
  }

  public function executeEdit(sfWebRequest $request)
  {
    //$this->forward404Unless($beca = Doctrine_Core::getTable('Beca')->find(array($request->getParameter('id'))), sprintf('Object beca does not exist (%s).', $request->getParameter('id')));
    //$this->form = new BecaForm($beca);
      $this->forward404Unless($beca = Doctrine_Core::getTable('Beca')->find(array($request->getParameter('id'))), sprintf('Object beca does not exist (%s).', $request->getParameter('id')));
    
    $this->form = new BecaForm($beca);
    $this->form->setDefault('tipo_beca', '');    
    $this->form->setDefault('tipo_entidad', '' );    
    $this->form->setDefault('entidad_que_convoca', '' );
  }

  public function executeUpdate(sfWebRequest $request)
  {
//    $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
//    $this->forward404Unless($beca = Doctrine_Core::getTable('Beca')->find(array($request->getParameter('id'))), sprintf('Object beca does not exist (%s).', $request->getParameter('id')));
//    $this->form = new BecaForm($beca);
//
//    $this->processForm($request, $this->form);
//
//    $this->setTemplate('edit');
          $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
    $this->forward404Unless($beca = Doctrine_Core::getTable('Beca')->find(array($request->getParameter('id'))), sprintf('Object beca does not exist (%s).', $request->getParameter('id')));
    $this->form = new BecaForm($beca);    
    $this->processForm($request, $this->form);
    $this->setTemplate('edit');
  }

  public function executeDelete(sfWebRequest $request)
  {
//    $request->checkCSRFProtection();
//
//    $this->forward404Unless($beca = Doctrine_Core::getTable('Beca')->find(array($request->getParameter('id'))), sprintf('Object beca does not exist (%s).', $request->getParameter('id')));
//    $beca->delete();
//
//    $this->redirect('becas/index');
      $arr_use = $request->getPostParameter('becas');
    
    for($i=0; $i<count($arr_use); $i++)
    {
        //print '-->'.$arr_use[$i];
        $this->forward404Unless($beca = Doctrine_Core::getTable('Beca')->find($arr_use[$i]), sprintf('El objeto beca NO EXISTE (%s).', $arr_use[$i]));
        $beca->setRegistroActivo(0);
        $beca->save();
    } 
    $this->redirect('becas/index');
  }

  protected function processForm(sfWebRequest $request, sfForm $form)
  {
//    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
//    if ($form->isValid())
//    {
//      $beca = $form->save();
//
//      $this->redirect('becas/edit?id='.$beca->getId());
//    }
      $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));            
    $valor = $request->getParameter('adicion');    
    if ($form->isValid())
    {       $file = $this->form->getValue('logo');            
            $id_uni = $this->form->getValue('entidad_que_convoca');                                  
            $file->setNameFile('logo'.$id_uni);
            $nuevaBeca = Doctrine::getTable('Beca')->createQuery('b')->where('b.logo ILIKE ?', '%logo'.$id_uni.'%')->execute()->toArray();                    
            $resultado = count($nuevaBeca);//<--PERMITE ENCONTRAR SI EL LOGO YA SE ENCUENTRA INGRESADO            
            
            if ($resultado === 1) //<<--CONDICION QUE PERMITE O NO GUARDAR EL ARCHIVO DE IMAGEN QUE CORRESPONDE AL LOGO
            {
                $file->saveNoFile('logo'.$id_uni.'.'.$file->getExtension());                
                if ($valor == 1)//<---CONDICION QUE PERMITE ADICIONAR MAS INFORMACION A LA BECA
                {   
                    $beca = $form->save();
                    $this->getUser()->setAttribute('beca_id', $beca->getId());
                    $this->getUser()->setAttribute('nom', $beca->getNombre());  
                    $this->getUser()->setAttribute('msg_beca', 'Se ha ADICIONADO un NUEVO item llamado-->');                    
                    $this->redirect('atributos/new');                    
                }
                else
                {           
                    $beca = $form->save();           
                    $this->redirect('becas/index');                    
                }                
             }
             else
             {
                if ($valor == 1)//<---CONDICION QUE PERMITE ADICIONAR MAS INFORMACION A LA BECA
                {             
                        $beca = $form->save();                        
                        $this->getUser()->setAttribute('beca_id', $beca->getId());
                        $this->getUser()->setAttribute('nom', $beca->getNombre()); 
                        $this->getUser()->setAttribute('msg_beca', 'Se ha ADICIONADO un NUEVO item llamado-->');                                                                    
                        $this->redirect('atributos/new');
                }
                else
                {           
                    $beca = $form->save();                    
                    $this->redirect('becas/index');
                }    
              }          
     }//FIN SI VALIDATE
  }
}
